<?
/* Se asegura que el archivo es incluido por el index */
	defined( 'LOAD_MODULE_ACTION' ) or die( 'No esta permitido el acceso directo a ' . __FILE__ );
	/* Cuando se hace el include del archivo automaticamente crea un objeto y lo guarda en una variable temporal */
		$this->oTmpObject = new Proyecto_exe( $this );

	class Proyecto_exe extends Exe
	{
		function Proyecto_exe( &$oModule )
			{
				$this->Exe( $oModule );
			}
		function finish()
		{
			$ncProyecto = getParam( 'ncProyecto' );
			if ( $ncProyecto)
			{
				// Modifica el Registro Tarea
					$this->oDatabase->update("atProyecto",
									"dFinalizado", Date("Y-m-d"),
									"WHERE",
									"ncProyecto", $ncProyecto );
			}
		}
		function duplicate()
		{
			$ncProyecto = getParam( 'ncProyecto' );
			if ( $ncProyecto)
			{
				$cSql = " SELECT cdProyecto, dVencimiento, ncResponsable, cDescripcion FROM atProyecto WHERE ncProyecto = $ncProyecto";
				list ( $cdProyecto, $dVencimiento, $ncResponsable, $cDescripcion )  = $this->oDatabase->getArray( $cSql );
				$ncProyectoNew = $this->oDatabase->nextKey("atProyecto", "ncProyecto" );
				$this->oDatabase->insert("atProyecto",
								"cdProyecto", "Copia de " . $cdProyecto,
								"dVencimiento", '',
								"ncResponsable", $ncResponsable,
								"cDescripcion", $cDescripcion,
								"dProyecto", Date("Y-m-d") ,
								"ncProyecto", $ncProyectoNew );

				$cSql = " SELECT * FROM atObjetivo WHERE ncProyecto = $ncProyecto";
				$aObjetivos = $this->oDatabase->getMatrix($cSql );
				$ncObjetivo = 1;
				foreach ($aObjetivos  as $aObjetivo  )
				{
					$this->oDatabase->insert("atObjetivo",
									"cdObjetivo", $aObjetivo['cdObjetivo'],
									"dVencimiento", $aObjetivo['dVencimiento'],
									"ncResponsable", $aObjetivo['ncResponsable'],
									"cDescripcion", $aObjetivo['cDescripcion'],
									"dObjetivo", Date("Y-m-d") ,
									"ncProyecto", $ncProyectoNew ,
									"ncObjetivo", $ncObjetivo );
					$ncObjetivo++;

				}
				$cSql = " SELECT * FROM atTarea WHERE ncProyecto = $ncProyecto";
				$aTareas= $this->oDatabase->getMatrix($cSql );
				foreach ($aTareas as $aTarea  )
				{
					$ncTarea = $this->oDatabase->nextKey("atTarea", "ncTarea");
					$this->oDatabase->insert("atTarea",
									"cdTarea", $aTarea['cdTarea'],
									"ncTareaPadre", $aTarea['ncTareaPadre'],
									"ncResponsable", $aTarea['ncResponsable'],
									"ncObjetivo", $aTarea['ncObjetivo'],
									"cDescripcion", $aTarea['cDescripcion'],
									"dVencimiento", $aTarea['dVencimiento'],
									"nqTiempo", $aTarea['nqTiempo'],
									"fiCosto", $aTarea['fiCosto'],
									"ncTarea", $ncTarea );
					$this->oDatabase->insert("atTareaProyecto",
									"ncProyecto", $ncProyectoNew ,
									"ncTarea", $ncTarea );
				}
				$cSql = " SELECT * FROM atProyectoContacto WHERE ncProyecto = $ncProyecto";
				$aContactos= $this->oDatabase->getMatrix($cSql );
				$ncContacto = 1;
				foreach ($aContactos as $aContacto  )
				{
					$this->oDatabase->insert("atProyectoContacto",
									"ncPersona", $aContacto['ncPersona'] ,
									"ncOrganizacion", $aContacto['ncOrganizacion'],
									"ncObjetivo", $aContacto['ncObjetivo'],
									"ncTarea", $aContacto['ncTarea'],
									"ncContacto", $ncContacto,
									"ncProyecto", $ncProyectoNew );
					$ncContacto++;
				}
			}
		}
		function undoFinish()
		{
			$ncProyecto = getParam( 'ncProyecto' );
			if ( $ncProyecto)
			{
				// Modifica el Registro Tarea
					$this->oDatabase->update("atProyecto",
									"dFinalizado", "",
									"WHERE",
									"ncProyecto", $ncProyecto );
			}
		}
		// MODIFICAR_Proyecto
		function update()
			{
				// Convierte a variables los datos del Formulario asociado a la accion
				$oForm = $this->oModule->loadClass( 'Proyecto_frm' );
				extract( $oForm->getFieldArray() );
				// Modifica el Registro Proyecto
					$this->oDatabase->update("atProyecto",
									"cdProyecto", $cdProyecto,
									"dVencimiento", $dVencimiento,
									"ncResponsable", $ncResponsable,
									"cDescripcion", $cDescripcion,
									"WHERE",
									"ncProyecto", $ncProyecto );
				//Actualiza el equipo
				if ( $oForm->aFields['aEquipo']->changedValues() )
				{
					$this->oDatabase->delete("atProyectoPersona","ncProyecto", $ncProyecto );
					$aPersonas  =  explode ( ",", $aEquipo);
					foreach ( $aPersonas as $ncPersona)
					{
						if ( $ncPersona )
						{
							$this->oDatabase->insert("atProyectoPersona",
										"ncPersona", $ncPersona,
											"ncProyecto", $ncProyecto );
						}
					}
				}
				addMessage("El proyecto se modifico con exito");
			}
		// AGREGAR_UNA_Proyecto
		function insert()
			{
				// Convierte a variables los datos del Formulario asociado a la accion
				$oForm = $this->oModule->loadClass( 'Proyecto_frm' );
				extract( $oForm->getFieldArray() );
				// Agrega Proyecto
					$ncProyecto = $this->oDatabase->nextKey("atProyecto", "ncProyecto" );
					$this->oDatabase->insert("atProyecto",
									"cdProyecto", $cdProyecto,
									"dVencimiento", $dVencimiento,
									"ncResponsable", $ncResponsable,
									"cDescripcion", $cDescripcion,
									"dProyecto", Date("Y-m-d") ,
									"ncProyecto", $ncProyecto );
				$aPersonas  =  explode ( ",", $aEquipo);
				foreach ( $aPersonas as $ncPersona)
				{
					if ( $ncPersona )
					{
						$this->oDatabase->insert("atProyectoPersona",
									"ncPersona", $ncPersona,
										"ncProyecto", $ncProyecto );
					}
				}
			}
		// ELIMINAR_UNA_Proyecto
		function delete()
			{
				$ncProyecto = getParam( 'ncProyecto' );
				if ( $ncProyecto  )
				{
					$this->oDatabase->delete( "atProyecto", "ncProyecto", $ncProyecto );
				}
			}
	}
?>
